属性系统

属性提供了指定和检查节点的状态、外观和行为的手段。例如,属性可以定义颜色,指示按钮是否按下或指定项的对齐方式。

您可通过设置 Kanzi Studio 中的属性值和访问代码中的属性值来使用属性,而无需理解属性系统的工作原理。然而,为了充分发挥 Kanzi 属性系统的特点,您应该熟悉属性系统的工作原理。

属性提供了一个 uniform 的方式来访问Kanzi 节点的数据,使许多Kanzi 子系统可以操纵数据。例如,这样您可以动画化属性值、提供属性值之间的绑定,以及监视属性值更改。

任何属性值都可能受到多个输入源的影响。属性系统定义如何从所有输入中解析属性值的规则并解析当前值。例如,您可以直接指定属性值,部分属性可以有默认值,样式可以影响属性值,动画和状态机可以修改属性值。通过这种方式,便可通过提供自动应用的规则,最小化必须要手动更改值的地方。

请参阅创建属性类型

属性数据类型

每个属性都通过属性类型描述。属性类型唯一地描述属性的使用位置、名称及属性保存的值的类型。数据类型定了属性的数据类型。

例如,Node::Visible 属性类型用于 Node 类和派生类并控制节点的可视性。您可以使用其名称 (Node.Visible) 在其运行期间查找属性类型,因为它属于布尔类型,所以接受 true 或 false 值。

请注意在 Kanzi Studio 中,您可以有更多特定属性类型,但其数据类型只能来自上文所列。例如,即使枚举值将值的范围限定为枚举中定义的条目,但仍用整数值表示它们。

属性的使用方法

大多数 Kanzi 属性在使用它们的类中定义。这类属性用于配置定义它们的对象的外观、状态或行为。例如,文本块 (Text Block) 节点中的文本 (Text) 属性定义节点中渲染的文本,而可见性 (Visible) 属性控制节点及其所有派生节点的可视性。

不过,有些 Kanzi 属性配置外观、行为或其他对象的状态。例如,材质可以定义漫射颜色 (Diffuse Color) 属性,使您可以使用那个材质将该属性分配给节点;网格布局 (Grid Layout) 定义行 (Row)列 (Column) 属性,但它们会被分配给网格布局 (Grid Layout) 节点下的项,而非网格布局 (Grid Layout) 节点本身。在 Kanzi 中,这些属性被称为附加属性。

默认属性值

每种属性类型都会定义属性的默认值。当收到查询时,如果没有直接或间接(通过样式、继承等其他方式)指定属性值,Kanzi 返回属性的默认值。例如,即使未将每个节点的 Node::Visible 属性指定为 true,但属性的默认值为 true。当收到查询时,所有节点默认都可见。

不指定值,但在开发应用程序时使用默认值可以节省时间。或者,对有些属性类型而言,没有属性值是一种条件。例如,属性 Node::WidthNode::Height 让用户控制特定节点的尺寸,例如,将宽度 (Width)高度 (Height) 设置为 100 像素,就会强制将控件尺寸设为 100 像素宽及 100 像素高。不指定这些值,就可让控件自行决定其尺寸。例如,图像 (Image) 节点可根据其显示的图像决定自身尺寸,而 堆栈布局 (Stack Layout) 节点可确定为是其所有项的尺寸。

属性优先级

查询属性值会生成一项结果,而确定值时,属性系统会评估可影响属性值的多个源。系统会按特定顺序评估属性值源。

Kanzi Engine 根据这些优先级规则(最高者为先)解析运行时值:

另请参阅

使用样式

状态机

触发器

动画